package fr.iut2.tc1.server;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;


import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import fr.iut2.tc1.client.MyService;
import fr.iut2.tc1.client.Result;
import fr.iut2.tc1.client.ResultImage;


public class MyServiceImpl extends RemoteServiceServlet implements MyService {
	
	//Méthode pour récupérer les sauvegardes
	public ArrayList<Result> getSauvegarde(String action) {
		
		ArrayList<Result> listResult = new ArrayList<Result>();
		ArrayList<String> listLignes = new ArrayList<String>();
		
		if(action.compareTo("FILE")==0)
		{
			File dossierTroll = new File("sauvegarde");
			
			for(int i=0;i<dossierTroll.list().length;i++)
			{
				listLignes.add(dossierTroll.list()[i]);
			}
			
			Iterator<String> iter = listLignes.iterator();
			String nomCourant = "";

			while (iter.hasNext()) 
			{
				nomCourant = iter.next();
				
				//Si on a fichier de type .txt
				if(nomCourant.endsWith(".txt"))
				{
					Result resultat = new Result();
					resultat.setName(nomCourant);
					
					try 
					{
						if(new File("sauvegarde/"+nomCourant).isFile())
						{
							
							ArrayList<String> inter = FileFactory.getLines(this.getServletContext().getRealPath("sauvegarde/"+nomCourant));
							
							String text = "";
							
							for(int i=0;i<inter.size();i++)
							{
								text = text + inter.get(i);
							}
							
							resultat.setText(text);
	
						}
					} 
					catch (FileNotFoundException e) {e.printStackTrace();}
					
					listResult.add(resultat);
				}
				
				
				
			}

			
		}
		
		return listResult;
	}

	
	
	/**
	 * Pour supprimer un troll
	 * @param s : le nom du troll
	 * @return
	 */
	public ArrayList<Result> suppressionTroll(String s)
	{
		File doc = new File("sauvegarde/"+s);
		
		if(doc.isFile())
		{
			doc.delete();
		}
		
		return null;
	}
	
	//Méthode pour récupérer les urls des images
	public ArrayList<ResultImage> getImages() {
		
		ArrayList<ResultImage> listResult = new ArrayList<ResultImage>();
		

		File dossierTroll = new File("image");
		
		for(int i=0;i<dossierTroll.list().length;i++)
		{
			listResult.add(new ResultImage(dossierTroll.list()[i]));
		}

		return listResult;
	}



	/**
	 * Permet de créer une sauvegarde de troll
	 */
	public ArrayList<Result> creerTroll(String name,String t) 
	{
		File doc = new File("sauvegarde/"+name+".txt");
		
		//On supprime le fichier s'il existait
		if(doc.isFile())
		{
			doc.delete();
		}
		
		//On crée le fichier en y insérant le texte donnée
		try 
		{
			doc.createNewFile();
			FileWriter ecrivain = new FileWriter(doc);
			ecrivain.write(t);
			ecrivain.close();
		} 
		catch (IOException e) {e.printStackTrace();}
		
		return null;
	}
	
	/*
	//Ecris dans les fichiers la description de l'image
	public ArrayList<Result> myMethod2(String s, String s2) {
		
		File doc = new File(s);
		
		if(!doc.isFile())
		{
			try 
			{
				doc.createNewFile();
				
			} 
			catch (IOException e) {e.printStackTrace();}
		}
		try 
		{
			FileWriter ecrivain = new FileWriter(doc);
			ecrivain.write(s2);
			ecrivain.close();
		}
		catch (IOException e) {e.printStackTrace();}
		
		return null;
	}

	//R�cup�ration du texte d'une image
	public ArrayList<Result> myMethod3(String s3) 
	{
		ArrayList<Result> listResult = new ArrayList<Result>();
		ArrayList<String> listLignes = new ArrayList<String>();
		
		File dossierImages = new File("images");
		
		for(int i=0;i<dossierImages.list().length;i++)
		{
			listLignes.add(dossierImages.list()[i]);
		}
		
		Iterator<String> iter = listLignes.iterator();
		String nomCourant = "";

		while (iter.hasNext()) 
		{
			Result resultat = new Result();
			nomCourant = iter.next();
			resultat.setUrl(nomCourant);
			
			try 
			{
				if(new File("description/"+nomCourant+".txt").isFile())
				{
					ArrayList<String> inter = FileFactory.getLines(this.getServletContext().getRealPath("description/"+nomCourant+".txt"));
					
					if(inter.size()>0)
					{
						resultat.setText(inter.get(0));
					}
					
				}
			} 
			catch (FileNotFoundException e) {e.printStackTrace();}
			
			if(resultat.getUrl().compareTo(s3)==0)
			{
				listResult.add(resultat);
			}
			
		}
		
		
		
		return listResult;
	}*/
}